# -*- encoding: utf-8 -*-
# @File    : ProcessData.py
# @Date    : 2021/01/29
# @Author  : 韩林新



"""
    function
        getlines()
"""
from .config import ENDLABEL
from .Control import Control


def getlines(data):
    """
    从recv数据中获取每一行数据

    Parameters
        data recv到的数据

    Returns
        lines 每一行数据组成的列表
        rin     最后一行没有遇到回车剩下的数据，和后面的数据组成一行
    """
    rin = ""
    lines = data.split('\n')
    if data[-1] != '\n':
        rin = lines[-1]
        lines.pop()
    return lines, rin


def resolve(lines, dict):
    """
    从行数据中解析出控件信息

    Parameters
        lines   行数据列表

    Returns
        ctrls   控件列表
        end     是否结束
    """
    end = False
    rline = ''
    for line in lines:
        if line == ENDLABEL:
            end = True
            break
        else:
            nline = rline + line
            items = nline.split(',')
            if len(items) < 9:
                # raise ValueError("socket 数据出错")
                rline = nline+'\n'
                continue
            elif len(items) > 9:
                raise ValueError("传输数据出错")
            ctrl = Control(items[0], items[1], int(items[2]), int(
                items[3]), int(items[4]), int(items[5]))
            dict.add_control(ctrl)
            rline = ''
    return end
